{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Neural Network - Multilayer Perceptron"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Implementation of a multilayer perceptron, a feedforward artificial neural network."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "> from mlxtend.classifier import MultiLayerPerceptron"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Overview"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "*Although the code is fully working and can be used for common classification tasks, this implementation is not geared towards efficiency but clarity – the original code was written for demonstration purposes.*"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Basic Architecture"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![](./NeuralNetMLP_files/neuralnet_mlp_1.png)  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The neurons $x_0$ and $a_0$ represent the bias units ($x_0=1$, $a_0=1$). \n",
    "\n",
    "The $i$th superscript denotes the $i$th layer, and the *j*th subscripts stands for the index of the respective unit. For example, $a_{1}^{(2)}$ refers to the first activation unit **after** the bias unit (i.e., 2nd activation unit) in the 2nd layer (here: the hidden layer)\n",
    "\n",
    "  \\begin{align}\n",
    "    \\mathbf{a^{(2)}} &= \\begin{bmatrix}\n",
    "           a_{0}^{(2)} \\\\\n",
    "           a_{1}^{(2)} \\\\\n",
    "           \\vdots \\\\\n",
    "           a_{m}^{(2)}\n",
    "         \\end{bmatrix}.\n",
    "  \\end{align}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Each layer $(l)$ in a multi-layer perceptron, a directed graph, is fully connected to the next layer $(l+1)$. We write the weight coefficient that connects the $k$th unit in the $l$th layer to the $j$th unit in layer $l+1$ as $w^{(l)}_{j, k}$.\n",
    "\n",
    "For example, the weight coefficient that connects the units\n",
    "\n",
    "$a_0^{(2)} \\rightarrow a_1^{(3)}$\n",
    "\n",
    "would be written as $w_{1,0}^{(2)}$."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Activation"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In the current implementation, the activations of the hidden layer(s) are computed via the logistic (sigmoid) function $\\phi(z) = \\frac{1}{1 + e^{-z}}.$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![](./NeuralNetMLP_files/logistic_function.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "(For more details on the logistic function, please see [`classifier.LogisticRegression`](./LogisticRegression.md); a general overview of different activation function can be found [here](../general_concepts/activation-functions.md).)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Furthermore, the MLP uses the softmax function in the output layer, For more details on the logistic function, please see [`classifier.SoftmaxRegression`](./SoftmaxRegression.md)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### References\n",
    "\n",
    "- D. R. G. H. R. Williams and G. Hinton. [Learning representations by back-propagating errors](http://lia.disi.unibo.it/Courses/SistInt/articoli/nnet1.pdf). Nature, pages 323–533, 1986.\n",
    "- C. M. Bishop. [Neural networks for pattern recognition](https://books.google.de/books?hl=en&lr=&id=T0S0BgAAQBAJ&oi=fnd&pg=PP1&dq=Neural+networks+for+pattern+recognition&ots=jL6TqGbBld&sig=fiLrMg-RJx22cgQ7zd2CiwUqNqI&redir_esc=y#v=onepage&q=Neural%20networks%20for%20pattern%20recognition&f=false). Oxford University Press, 1995.\n",
    "- T. Hastie, J. Friedman, and R. Tibshirani. [The Elements of Statistical Learning](http://statweb.stanford.edu/%7Etibs/ElemStatLearn/), Volume 2. Springer, 2009."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example 1 - Classifying Iris Flowers"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Load 2 features from Iris (petal length and petal width) for visualization purposes:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "from mlxtend.data import iris_data\n",
    "X, y = iris_data()\n",
    "X = X[:, [0, 3]]    \n",
    "\n",
    "# standardize training data\n",
    "X_std = (X - X.mean(axis=0)) / X.std(axis=0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Train neural network for 3 output flower classes ('Setosa', 'Versicolor', 'Virginica'), regular gradient decent (`minibatches=1`), 30 hidden units, and no regularization."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Gradient Descent"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Setting the `minibatches` to `1` will result in gradient descent training; please see [Gradient Descent vs. Stochastic Gradient Descent](../general_concepts/gradient-optimization.md) for details."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Iteration: 150/150 | Cost 0.06 | Elapsed: 0:00:00 | ETA: 0:00:00"
     ]
    }
   ],
   "source": [
    "from mlxtend.classifier import MultiLayerPerceptron as MLP\n",
    "\n",
    "nn1 = MLP(hidden_layers=[50], \n",
    "          l2=0.00, \n",
    "          l1=0.0, \n",
    "          epochs=150, \n",
    "          eta=0.05, \n",
    "          momentum=0.1,\n",
    "          decrease_const=0.0,\n",
    "          minibatches=1, \n",
    "          random_seed=1,\n",
    "          print_progress=3)\n",
    "\n",
    "nn1 = nn1.fit(X_std, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x106100518>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from mlxtend.plotting import plot_decision_regions\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "fig = plot_decision_regions(X=X_std, y=y, clf=nn1, legend=2)\n",
    "plt.title('Multi-layer Perceptron w. 1 hidden layer (logistic sigmoid)')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11ad9ea90>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "plt.plot(range(len(nn1.cost_)), nn1.cost_)\n",
    "plt.ylabel('Cost')\n",
    "plt.xlabel('Epochs')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Accuracy: 96.67%\n"
     ]
    }
   ],
   "source": [
    "print('Accuracy: %.2f%%' % (100 * nn1.score(X_std, y)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Stochastic Gradient Descent"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Setting `minibatches` to `n_samples` will result in stochastic gradient descent training; please see [Gradient Descent vs. Stochastic Gradient Descent](../general_concepts/gradient-optimization.md) for details."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Iteration: 5/5 | Cost 0.11 | Elapsed: 00:00:00 | ETA: 00:00:00"
     ]
    },
    {
     "data": {
      "image/png": "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\nRPnG09MAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11acdb588>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "nn2 = MLP(hidden_layers=[50], \n",
    "          l2=0.00, \n",
    "          l1=0.0, \n",
    "          epochs=5, \n",
    "          eta=0.005, \n",
    "          momentum=0.1,\n",
    "          decrease_const=0.0,\n",
    "          minibatches=len(y), \n",
    "          random_seed=1,\n",
    "          print_progress=3)\n",
    "\n",
    "nn2.fit(X_std, y)\n",
    "\n",
    "plt.plot(range(len(nn2.cost_)), nn2.cost_)\n",
    "plt.ylabel('Cost')\n",
    "plt.xlabel('Epochs')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Continue the training for 25 epochs..."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Iteration: 25/25 | Cost 0.07 | Elapsed: 0:00:00 | ETA: 0:00:00"
     ]
    }
   ],
   "source": [
    "nn2.epochs = 25\n",
    "nn2 = nn2.fit(X_std, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nHiIiIhKZ/we8We2hF/TQfQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x106100438>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(range(len(nn2.cost_)), nn2.cost_)\n",
    "plt.ylabel('Cost')\n",
    "plt.xlabel('Epochs')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example 2 - Classifying Handwritten Digits from a 10% MNIST Subset"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Load a **5000-sample subset** of the [MNIST dataset](http://rasbt.github.io/mlxtend/docs/data/mnist/) (please see [`data.loadlocal_mnist`](../data/loadlocal_mnist.md) if you want to download and read in the complete MNIST dataset).\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "from mlxtend.data import mnist_data\n",
    "from mlxtend.preprocessing import shuffle_arrays_unison\n",
    "\n",
    "X, y = mnist_data()\n",
    "X, y = shuffle_arrays_unison((X, y), random_seed=1)\n",
    "X_train, y_train = X[:500], y[:500]\n",
    "X_test, y_test = X[500:], y[500:]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Visualize a sample from the MNIST dataset to check if it was loaded correctly:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nZWQIS1JGhrAkZeRly9rGmjVrKtfOnz+/lh5OO+20yrXf/va3K9fuvPPOE2mnko9+9KOVa7/whS9U\nrr3vvvsq1x533HGVazU1OBKWpIwMYUnKyBCWpIwMYUnKyBCWpIwMYUnKyBCWpIwMYUnKyBCWpIwM\nYUnKyMuWdxCvv/565dqLLrqocu0rr7xSuXb33XevXPuZz3ymcm2dlyI3Y5999qlce8ABB1SuPfXU\nUyvX3n///ZVr586dW7lW9Wl6JBwR8yLiBxHxXERsjYiTRqm5JCLWRMSrEXFPRHi0JWkUE5mOmAE8\nApwNpJEvRsR5wOeAM4EjgI3A8ojYdRJ9SlJHano6IqW0DFgGEBExSsm5wKUppTvKmgXAeuDPgZsn\n3qokdZ6WfjAXEfsDc4B7B5ellDYADwFHtXJbktQJWn12xByKKYr1I5avL1+TJA3hKWqSlFGrT1Fb\nBwQwm+Gj4dnAz8dbsa+vj66urmHLent76e3tbXGLktQ6jUaDRqMxbNnAwEDl9VsawimlZyJiHXA8\n8H8BImImcCTwd+Otu3jxYrq7u1vZjiTVbrTBYn9/Pz09PZXWbzqEI2IGMJdixAtwQES8D3g5pfRv\nwFXABRHxFLAauBT4DXB7s9uSpE43kZHwB4D7KD6AS8DXy+XfBT6dUro8InYHvgnsAfwE+EhK6Y0W\n9CtJHWUi5wn/mO18oJdSugi4aGItqQ7NfIPyd77znVp6WLx4ceXaefPm1dJDnV5++eXKtW+8UX1M\n8vzzz1euPfrooyvXPv3005Vrp0+fXrlWzfHsCEnKyBCWpIwMYUnKyBCWpIwMYUnKyBCWpIwMYUnK\nyBCWpIwMYUnKyBCWpIz8tuU2ltI2X/E3puuuu66WHvbcc8/KtQsWLKilhzq9+eablWuvuOKKyrWr\nVq2aSDvb1cwlzlu3bq2lBzXHkbAkZWQIS1JGhrAkZWQIS1JGhrAkZWQIS1JGhrAkZWQIS1JGhrAk\nZWQIS1JGXrbcxpq5RPXqq6+upYcLL7ywcu20adNq6aEZa9eubap+4cKFlWtvvfXWZttpuWYuI4+I\nGjtRVY6EJSkjQ1iSMjKEJSkjQ1iSMjKEJSkjQ1iSMjKEJSkjQ1iSMjKEJSkjQ1iSMjKEJSkj7x3R\nxt54443cLXD44YfX8r6vvPJK5dobb7yxcu0555zTVB/N3F/hwAMPrFy7evXqyrVbtmypXPve9763\ncu0uu/i//1TgSFiSMjKEJSkjQ1iSMjKEJSkjQ1iSMjKEJSkjQ1iSMjKEJSkjQ1iSMjKEJSkjr1ts\nY/vss0/l2gULFlSuXbp0aeXak08+uXLt+eefX7n2sssuq1y7Zs2ayrXNuvDCCyvXHnbYYZVr58+f\nP5F2tuvaa6+tXDtt2rRaelBzmh4JR8S8iPhBRDwXEVsj4qQRr19fLh/6uLN1LUtS55jIdMQM4BHg\nbCCNUXMXMBuYUz56J9SdJHW4pqcjUkrLgGUAMfYtpl5PKb0wmcYkaUdQ1wdzx0bE+oh4IiKWRMQ7\natqOJLW1Oj6Yuwu4BXgGOBD4KnBnRByVUhpr+kKSdkgtD+GU0s1Dnv4iIh4FVgHHAveNtV5fXx9d\nXV3DlvX29tLb63SypKmr0WjQaDSGLRsYGKi8fu2nqKWUnomIF4G5jBPCixcvpru7u+52JKmlRhss\n9vf309PTU2n92i/WiIh9gVnA2rq3JUntpumRcETMoBjVDp4ZcUBEvA94uXwsopgTXlfWXQY8CSxv\nRcOS1EkmMh3xAYpphVQ+vl4u/y7FucOHAQuAPYA1FOF7YUpp86S7laQOM5HzhH/M+NMYfzrxdtSM\nnXaqPpt0ySWXVK5dvrz6Ly3r1q2rXLtw4cLKtTNmzKhce9BBB1WuvfvuuyvXAuy7776Va5ctW1a5\nduvWrU31UVUzf2+aGryBjyRlZAhLUkaGsCRlZAhLUkaGsCRlZAhLUkaGsCRlZAhLUkaGsCRlZAhL\nUkZ+2/IOopnLb5944onKtb/61a8m0s52zZo1q3LtfvvtV0sPzXr66acr1479zWDb2mOPPSrXetly\n+3EkLEkZGcKSlJEhLEkZGcKSlJEhLEkZGcKSlJEhLEkZGcKSlJEhLEkZGcKSlJGXLWsbb3/72yvX\ndnd319hJe/ne975Xy/seccQRlWv33nvvWnpQfRwJS1JGhrAkZWQIS1JGhrAkZWQIS1JGhrAkZWQI\nS1JGhrAkZWQIS1JGhrAkZeRly9I4tmzZUrl28+bNtfRw3nnn1fK+mhocCUtSRoawJGVkCEtSRoaw\nJGVkCEtSRoawJGVkCEtSRoawJGVkCEtSRoawJGXkZcvSOK688srKtY888kjl2l133bVy7V577VW5\nVu2nqZFwRHw5Ih6OiA0RsT4ibo2Ig0apuyQi1kTEqxFxT0TMbV3LktQ5mp2OmAdcCxwJfAiYBtwd\n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\nlqSM/j+bVFAf6hpZRgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11aef5f98>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "def plot_digit(X, y, idx):\n",
    "    img = X[idx].reshape(28,28)\n",
    "    plt.imshow(img, cmap='Greys',  interpolation='nearest')\n",
    "    plt.title('true label: %d' % y[idx])\n",
    "    plt.show()\n",
    "    \n",
    "plot_digit(X, y, 3500)    "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Standardize pixel values:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "from mlxtend.preprocessing import standardize\n",
    "\n",
    "X_train_std, params = standardize(X_train, \n",
    "                                  columns=range(X_train.shape[1]), \n",
    "                                  return_params=True)\n",
    "\n",
    "X_test_std = standardize(X_test,\n",
    "                         columns=range(X_test.shape[1]),\n",
    "                         params=params)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Initialize the neural network to recognize the 10 different digits (0-10) using 300 epochs and mini-batch learning."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "nn1 = MLP(hidden_layers=[150], \n",
    "          l2=0.00, \n",
    "          l1=0.0, \n",
    "          epochs=100, \n",
    "          eta=0.005, \n",
    "          momentum=0.0,\n",
    "          decrease_const=0.0,\n",
    "          minibatches=100, \n",
    "          random_seed=1,\n",
    "          print_progress=3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Learn the features while printing the progress to get an idea about how long it may take."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Iteration: 100/100 | Cost 0.01 | Elapsed: 0:00:17 | ETA: 0:00:00"
     ]
    },
    {
     "data": {
      "image/png": "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\nAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x126464438>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "nn1.fit(X_train_std, y_train)\n",
    "\n",
    "plt.plot(range(len(nn1.cost_)), nn1.cost_)\n",
    "plt.ylabel('Cost')\n",
    "plt.xlabel('Epochs')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Accuracy: 100.00%\n",
      "Test Accuracy: 84.62%\n"
     ]
    }
   ],
   "source": [
    "print('Train Accuracy: %.2f%%' % (100 * nn1.score(X_train_std, y_train)))\n",
    "print('Test Accuracy: %.2f%%' % (100 * nn1.score(X_test_std, y_test)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Please note** that this neural network has been trained on only 10% of the MNIST data for technical demonstration purposes, hence, the lousy predictive performance."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# API"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "## MultiLayerPerceptron\n",
      "\n",
      "*MultiLayerPerceptron(eta=0.5, epochs=50, hidden_layers=[50], n_classes=None, momentum=0.0, l1=0.0, l2=0.0, dropout=1.0, decrease_const=0.0, minibatches=1, random_seed=None, print_progress=0)*\n",
      "\n",
      "Multi-layer perceptron classifier with logistic sigmoid activations\n",
      "\n",
      "**Parameters**\n",
      "\n",
      "- `eta` : float (default: 0.5)\n",
      "\n",
      "    Learning rate (between 0.0 and 1.0)\n",
      "\n",
      "- `epochs` : int (default: 50)\n",
      "\n",
      "    Passes over the training dataset.\n",
      "    Prior to each epoch, the dataset is shuffled\n",
      "    if `minibatches > 1` to prevent cycles in stochastic gradient descent.\n",
      "\n",
      "- `hidden_layers` : list (default: [50])\n",
      "\n",
      "    Number of units per hidden layer. By default 50 units in the\n",
      "    first hidden layer. At the moment only 1 hidden layer is supported\n",
      "\n",
      "- `n_classes` : int (default: None)\n",
      "\n",
      "    A positive integer to declare the number of class labels\n",
      "    if not all class labels are present in a partial training set.\n",
      "    Gets the number of class labels automatically if None.\n",
      "\n",
      "- `l1` : float (default: 0.0)\n",
      "\n",
      "    L1 regularization strength\n",
      "\n",
      "- `l2` : float (default: 0.0)\n",
      "\n",
      "    L2 regularization strength\n",
      "\n",
      "- `momentum` : float (default: 0.0)\n",
      "\n",
      "    Momentum constant. Factor multiplied with the\n",
      "    gradient of the previous epoch t-1 to improve\n",
      "    learning speed\n",
      "    w(t) := w(t) - (grad(t) + momentum * grad(t-1))\n",
      "\n",
      "- `decrease_const` : float (default: 0.0)\n",
      "\n",
      "    Decrease constant. Shrinks the learning rate\n",
      "    after each epoch via eta / (1 + epoch*decrease_const)\n",
      "\n",
      "- `minibatches` : int (default: 1)\n",
      "\n",
      "    Divide the training data into *k* minibatches\n",
      "    for accelerated stochastic gradient descent learning.\n",
      "    Gradient Descent Learning if `minibatches` = 1\n",
      "    Stochastic Gradient Descent learning if `minibatches` = len(y)\n",
      "    Minibatch learning if `minibatches` > 1\n",
      "\n",
      "- `random_seed` : int (default: None)\n",
      "\n",
      "    Set random state for shuffling and initializing the weights.\n",
      "\n",
      "- `print_progress` : int (default: 0)\n",
      "\n",
      "    Prints progress in fitting to stderr.\n",
      "    0: No output\n",
      "    1: Epochs elapsed and cost\n",
      "    2: 1 plus time elapsed\n",
      "    3: 2 plus estimated time until completion\n",
      "\n",
      "**Attributes**\n",
      "\n",
      "- `w_` : 2d-array, shape=[n_features, n_classes]\n",
      "\n",
      "    Weights after fitting.\n",
      "\n",
      "- `b_` : 1D-array, shape=[n_classes]\n",
      "\n",
      "    Bias units after fitting.\n",
      "\n",
      "- `cost_` : list\n",
      "\n",
      "    List of floats; the mean categorical cross entropy\n",
      "    cost after each epoch.\n",
      "\n",
      "**Examples**\n",
      "\n",
      "For usage examples, please see\n",
      "    [http://rasbt.github.io/mlxtend/user_guide/classifier/MultiLayerPerceptron/](http://rasbt.github.io/mlxtend/user_guide/classifier/MultiLayerPerceptron/)\n",
      "\n",
      "### Methods\n",
      "\n",
      "<hr>\n",
      "\n",
      "*fit(X, y, init_params=True)*\n",
      "\n",
      "Learn model from training data.\n",
      "\n",
      "**Parameters**\n",
      "\n",
      "- `X` : {array-like, sparse matrix}, shape = [n_samples, n_features]\n",
      "\n",
      "    Training vectors, where n_samples is the number of samples and\n",
      "    n_features is the number of features.\n",
      "\n",
      "- `y` : array-like, shape = [n_samples]\n",
      "\n",
      "    Target values.\n",
      "\n",
      "- `init_params` : bool (default: True)\n",
      "\n",
      "    Re-initializes model parameters prior to fitting.\n",
      "    Set False to continue training with weights from\n",
      "    a previous model fitting.\n",
      "\n",
      "**Returns**\n",
      "\n",
      "- `self` : object\n",
      "\n",
      "\n",
      "<hr>\n",
      "\n",
      "*predict(X)*\n",
      "\n",
      "Predict targets from X.\n",
      "\n",
      "**Parameters**\n",
      "\n",
      "- `X` : {array-like, sparse matrix}, shape = [n_samples, n_features]\n",
      "\n",
      "    Training vectors, where n_samples is the number of samples and\n",
      "    n_features is the number of features.\n",
      "\n",
      "**Returns**\n",
      "\n",
      "- `target_values` : array-like, shape = [n_samples]\n",
      "\n",
      "    Predicted target values.\n",
      "\n",
      "<hr>\n",
      "\n",
      "*predict_proba(X)*\n",
      "\n",
      "Predict class probabilities of X from the net input.\n",
      "\n",
      "**Parameters**\n",
      "\n",
      "- `X` : {array-like, sparse matrix}, shape = [n_samples, n_features]\n",
      "\n",
      "    Training vectors, where n_samples is the number of samples and\n",
      "    n_features is the number of features.\n",
      "\n",
      "**Returns**\n",
      "\n",
      "- `Class probabilties` : array-like, shape= [n_samples, n_classes]\n",
      "\n",
      "\n",
      "<hr>\n",
      "\n",
      "*score(X, y)*\n",
      "\n",
      "Compute the prediction accuracy\n",
      "\n",
      "**Parameters**\n",
      "\n",
      "- `X` : {array-like, sparse matrix}, shape = [n_samples, n_features]\n",
      "\n",
      "    Training vectors, where n_samples is the number of samples and\n",
      "    n_features is the number of features.\n",
      "\n",
      "- `y` : array-like, shape = [n_samples]\n",
      "\n",
      "    Target values (true class labels).\n",
      "\n",
      "**Returns**\n",
      "\n",
      "- `acc` : float\n",
      "\n",
      "    The prediction accuracy as a float\n",
      "    between 0.0 and 1.0 (perfect score).\n",
      "\n",
      "\n"
     ]
    }
   ],
   "source": [
    "with open('../../api_modules/mlxtend.classifier/MultiLayerPerceptron.md', 'r') as f:\n",
    "    print(f.read())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  },
  "toc": {
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
